package com.ebupt.migu.music.autotri.mapper;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ebupt.migu.music.autotri.entity.PushResult;
import org.apache.ibatis.annotations.Mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.ibatis.annotations.Param;

/**
 * @author liuyangyang@e-byte.com
 * @description: TODO
 * @date 2023/6/25 16:46
 */
@Mapper
@DS("mysql_mg")
public interface AutoOperateMapper {
    /**
     * tac_status：策略状态 1.待审批 2.已通过3.已驳回 4.未开始 5.进行中 6.已暂停 7.已结束 8.待提审 9.已通过
     * <p>
     * 将符合条件的活动状态调整到进行中
     */
    public void updateAutoOperateActivityStart();

    /**
     * tac_status：策略状态 1.待审批 2.已通过3.已驳回 4.未开始 5.进行中 6.已暂停 7.已结束 8.待提审 9.已通过
     * <p>
     * 将符合条件的活动状态调整到已结束
     */
    public void updateAutoOperateActivityEnd();

    /**
     * 按日期和类型查询自动运营效果数据
     */
    public Map<String, String> queryEffect(@Param("tacMode") String tacMode, @Param("tacId") String tacId, @Param("date") String date);

    /**
     * 新增本地自动运营效果统计数据
     */
    public void addEffect(Map perate);

    /**
     * 修改本地自动运营效果统计数据
     */
    public void alterEffect(Map perate);


    /**
     * 创建push_result记录
     *
     * @param pushResult
     */
    void createPushResult(PushResult pushResult);

    /**
     * 创建push_result记录
     *
     * @param tacId
     */
    PushResult queryPushResult(@Param("tacId") String tacId, @Param("date") String date);

    int selectByTaskId(@Param("taskId") String taskId);

    int createStatisSMS(Map<String, Object> params);

    /**
     * 更新push统计
     *
     * @param params
     */
    int updateStatisPush(Map<String, Object> params);


    int createStatisPush(Map<String, Object> params);


    int createStatisSmg(Map<String, Object> params);

    /**
     * 更新push推送的统计结果获取状态
     *
     * @return
     */
    int updatePushResultStatus(@Param("tacId") String taskId,@Param("pushDate")  String pushDate);


    /**
     * 查询运营中且未结束的活动 策略类型：1-短信策略；2-push策略；3-消息通知；4-banner；5-音乐之声
     */
    public List<HashMap<String, String>> queryOperateByMode(@Param("tacMode") int tacMode);

    /**
     * 查询指定状态的活动ID和客群ID
     *
     * @return
     */
    public List<HashMap<String, String>> queryTacInfoByTacStatus();

    /**
     * 查询运营中且未暂停的活动 策略类型：1-短信策略；2-push策略；3-消息通知；4-banner；5-音乐之声
     */
    public List<String> queryTacIdByMode(@Param("tacMode") int tacMode);

    /**
     * 查询短信活动详情
     *
     * @param tacId
     * @return
     */
    public Map<String, String> queryAutoTriTacSMSByTacId(@Param("tacId") String tacId);

    /**
     * 查询客群详情
     *
     * @param tacId
     * @return
     */
    public Integer queryGroupByTacId(@Param("tacId") String tacId);

    /**
     * 查询PUSH活动详情
     *
     * @param tacId
     * @return
     */
    public Map<String, String> queryAutoTriTacPUSHByTacId(@Param("tacId") String tacId);

    /**
     * 查询消息通知活动详情
     *
     * @param tacId
     * @return
     */
    public Map<String, String> queryAutoTriTacMessageByTacId(@Param("tacId") String tacId);

    /**
     * 校验是否属于黑名单成员
     *
     * @param blacklistId
     * @param userId
     * @return
     */
    public boolean checkBlacklistMember(@Param("blacklistId") String blacklistId,@Param("userId") String userId);

    /**
     * 查询iop标签id
     *
     * @param tacId
     * @return
     */
    public String queryIopTagIdByTacId(@Param("tacId") String tacId);

    public void updateDeptInfo(@Param("str") String str);


    /**
     * 检查当日是否已经创建了效果统计记录
     *
     * @param tacId
     * @param day
     * @return
     */
    public Boolean isPushResultExist(@Param("tacId") String tacId, @Param("day") String day);

    List<String> qryPushDate(@Param("tacId") String tacId);
}
